package com.hyt.it.ogt.ks.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.ks.api.kw.model.ObjectiveItemScoreDTO;
import com.hyt.it.ogt.ks.model.dto.CandidateAnswerSimpleVO;
import com.hyt.it.ogt.ks.model.entity.CandidateAnswer;
import com.hyt.it.ogt.ks.model.entity.CandidateAnswerBackup;

/**
 * @author wuyingge
 * @ClassName ICandidateAnswerBackupService.java
 * @Description 考试答案详情表 服务类
 * @createTime 2021年11月15日 18:35:00
 */
public interface ICandidateAnswerBackupService extends IService<CandidateAnswerBackup> {
    /**
     * 获取考生答案
     * @param
     * @return
     */
    List<CandidateAnswer> selectList(String examId, String examCandidateId, Integer maxScoreVer, Boolean isObjective);

    /**
     * 为整场考试统分进行查询
     * @param examId
     * @param candidateId
     * @return
     */
    List<CandidateAnswer> calculateAllStudentScores(String examId, String candidateId, String paperId, String paperVersion);

    /**
     * 兴业银行推送大易查询
     * @param candidateId
     * @param examId
     * @param paperId
     * @param paperVersion
     * @return
     */
    List<CandidateAnswer> getXyEvalResult(String candidateId, String examId, String paperId, String paperVersion);

    /**
     * 考生自己查询考试成绩
     * @param examId
     * @param admissionNumber
     * @param maxScoreVer
     * @return
     */
    List<CandidateAnswer> getAnswerList(String examId, String admissionNumber, Integer maxScoreVer);

    /**
     * 将答案从表中转存至备份表
     * @return
     */
    Boolean moveAnswerToBackup(String ... candidateId);

    /**
     * 移动回原表，当撤销试卷时
     * @param examId
     * @param candidateId
     * @return
     */
    Boolean cancelPackageCommit(String examId, String candidateId,Integer logBackup);

    /**
     * 当考生选择重新考试时，处理已备份的答题信息表
     * @param examId
     * @param candidateId
     * @param redoExamCount
     * @return
     */
    Boolean redoExam(String examId, String candidateId, Integer redoExamCount);

    /**
     * 获取考生客观题分数明细
     * @param examId
     * @param candidateId
     * @return
     */
    List<ObjectiveItemScoreDTO> getObjectiveItemScore(String examId, String candidateId, String paperId, String paperVersion);


    List<CandidateAnswerSimpleVO> selectSimpleAnswerBackupList(String examId, List<String> examCandidateIds, List<Integer> maxScoreVers);
}
